package 分治快排;

public class 颜色分类1 {
    //https://leetcode.cn/problems/sort-colors/description/
    public void sortColors(int[] nums) {
        for(int left = -1, cur = 0, right = nums.length; cur < right; ) {
            if(nums[cur] == 0)
                swap(++left,cur++,nums); // 与已扫描维护的元素交换过来 无需重复维护：cur把前面已扫描的元素交换过来，换过来的元素无需再维护了
            else if(nums[cur] == 2)
                swap(--right,cur,nums); // 与未扫描维护的元素交换过来 需要进行维护：cur把后面未扫描的元素交换过来，换过来的元素需要进行维护
            else
                cur++;
        }
    }
    public void swap(int index1, int index2, int[] nums) {
        int tmp = nums[index1];
        nums[index1] = nums[index2];
        nums[index2] = tmp;
    }
}